/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"8E633387-E5C1-4B10-905C-005404EE0FF5",variableType:4}
 */
var gEstadoAbm = 0;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"E94E8B95-6E1D-4B4A-A781-BE3D3A3D7654",variableType:4}
 */
var gUsuarioID = null;

/**
 * @type {Array}
 *
 * @properties={typeid:35,uuid:"91F9FB61-59AD-4560-8B0B-95F9AC3C33CC",variableType:-4}
 */
var ar = new Array();

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"6A56F486-71C5-45F5-91C9-0C572215B869",variableType:4}
 */
var gIdFormActual = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"20FBBD39-3F45-4A5B-9796-F417C6C85A25",variableType:4}
 */
var gIdSolucion = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"0240554E-5D1C-4320-8FEF-D39247A85ED2",variableType:4}
 */
var gLimiteCsv = 1000;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"7A9E3519-D99F-487C-BCCF-55CE3B2F1DE9"}
 */
var gLoginUserv = null;

/**
 * @type {Number}
 *
 * @properties={typeid:35,uuid:"202E27B0-87F4-41EE-BE18-A8A31BB5F912",variableType:4}
 */
var gUservID = null;

/**
 * @type {String}
 *
 * @properties={typeid:35,uuid:"5B5620BB-F65C-43E2-A00A-80AC793A14FC"}
 */
var textoBusqueda = null;

/**
 * @type {Array}
 *
 * @properties={typeid:35,uuid:"9E4E67FD-EF17-4274-ACAB-19DC455CFDFD",variableType:-4}
 */
var gHistoriaIndice = new Array();

/**
 * @properties={typeid:24,uuid:"D29F1E1E-382C-4FD4-AAA2-B4860D4856D5"}
 * @AllowToRunInFind
 */
function buscar()
{
	/** @type {String}*/
	var search = globals.textoBusqueda
	altaFavoritos(search)
	
	if(search)
	{
		var texto = DM_COLUMNTYPE.TEXT
		var searchStr = '#%' + search + '%'

		if(search.indexOf('/') != -1 || search.indexOf('-') != -1)
		{
			var dataType = DM_COLUMNTYPE.DATETIME //probably a date
			search = new Date(search)
		}
		else if(search.indexOf('.') != -1 && !isNaN(parseFloat(search)))
		{
			var dataType = DM_COLUMNTYPE.NUMBER //probably a number
			search = parseFloat(search)
		}
		else if(!isNaN(parseInt(search)) && search.indexOf('.') == -1)
		{
			var dataType = DM_COLUMNTYPE.INTEGER //probably an integer
			search = parseInt(search)
		}
		
		var tbl = databaseManager.getTable( forms[gidformactual_to_forms.nombre].controller.getServerName(),  forms[gidformactual_to_forms.nombre].controller.getTableName())
		var cols = tbl.getColumnNames()
		cols = databaseManager.convertToDataSet( cols)
/*		var i= 1
		while (( i <= cols.getMaxRowIndex()) && (cols.getValue(i,1) != null))
		{
			var c = cols.getValue(i,1)
			var tipo = tbl.getColumn(c).getType()
			if (tipo != dataType && tipo != texto)
				cols.removeRow(i)
			else
				i++
		}*/
		var fs = forms[gidformactual_to_forms.nombre].foundset//databaseManager.getFoundSet( forms[gidformactual_to_forms.nombre].controller.getServerName(),  forms[gidformactual_to_forms.nombre].controller.getTableName())
		if (fs.find())
		{
/*		for (i= 1; i<cols.getMaxRowIndex();i++)
		{
			fs.newRecord()
			fs.setDataProviderValue(cols.getValue(i,1),searchStr)
		}	*/
			var i= 1
			while (( i <= cols.getMaxRowIndex()) && (cols.getValue(i,1) != null))
			{
				var c = cols.getValue(i,1)
				var tipo = tbl.getColumn(c).getType()
				if (tipo != dataType && tipo != texto)
					cols.removeRow(i)
				else
				{
					fs.newRecord()
					if (tipo == dataType)
						fs.setDataProviderValue(cols.getValue(i,1),search)
					else
						fs.setDataProviderValue(cols.getValue(i,1),searchStr)
					i++
				}
			}
	
			var found = fs.search(false)
			if (found > 0)
			{
				//forms[gidformactual_to_forms.nombre].controller.loadRecords(fs)
				if (gidformactual_to_forms.pantallas_to_pantalla_asociada != null)
					forms[gidformactual_to_forms.pantallas_to_pantalla_asociada.nombre].controller.loadRecords(fs)
				forms.menu_opciones.elements.lbl_reg.text = '1 de '+ forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex() + ' registros'
	
			}
			else
				globals.gDialog('Error','No se encontraron registros','OK','CerrarForm')
		}
		else
			globals.gDialog ('Error','No se pudo hacer la busqueda','OK','CerrarForm')
	}
}

/**
 * @param {String} search
 *
 * @properties={typeid:24,uuid:"9394F0BD-0141-4296-9B9B-1131EBF636C1"}
 * @AllowToRunInFind
 */
function altaFavoritos(search)
{
	/** @type {JSFoundSet<db:/fwk_navigation_infocom/busquedas_usuario>}*/
	var $fav = databaseManager.getFoundSet('fwk_navigation_infocom','busquedas_usuario')
	
	$fav.find()
	
	$fav.texto = '#' + search
	
	if ($fav.search() == 0)
	{
		$fav.newRecord()
		
		$fav.usuario_id = globals.gUsuarioID
		$fav.texto = search
	}
	else
	{
		$fav.cantidad++
	}
	databaseManager.saveData($fav.getRecord($fav.getSelectedIndex()))
}

/**
 * @properties={typeid:24,uuid:"36B3B1B2-3F4B-4A61-B8FD-34398785A7FD"}
 */
function cambiarConfirmar()
{
	var p = arguments[0]
	
	if (p == null)
	{
		var currentState = forms.menu_opciones.elements.btn_confirmar.visible;
		forms.menu_opciones.elements.btn_confirmar.visible = !currentState;
		
		currentState = forms.menu_opciones.elements.btn_cancelar.visible;
		forms.menu_opciones.elements.btn_cancelar.visible = !currentState;
	}
	else
	{
		forms.menu_opciones.elements.btn_confirmar.visible = p
		forms.menu_opciones.elements.btn_cancelar.visible = p
	}
}

/**
 * @properties={typeid:24,uuid:"273765A2-E46B-4FCC-A92C-DAD0AB6CC848"}
 */
function config()
{
	//databaseManager.setAutoSave(false)
	forms[gidformactual_to_forms.nombre].controller.readOnly = !gidformactual_to_forms.modificable
	//globals.cambiarEstilo()
	globals.filtrarMenu()
}

/**
 * @properties={typeid:24,uuid:"17FD3D8C-6DB8-47B6-8EE2-E60D8FBFBEBE"}
 */
function esconderBotones()
{
	globals.setVisible('abm',false)
	globals.setVisible('Impresion',false)
	globals.setVisible('Movimiento',false)
	globals.setVisible('Exporta',false)
	globals.cambiarConfirmar()
}

/**
 * @properties={typeid:24,uuid:"3F7FEAD4-C57D-4A33-BA71-C312B829EACA"}
 */
function filtrarMenu()
{
	globals.setVisible('abm',gidformactual_to_forms.abm)
	globals.setVisible('Impresion',gidformactual_to_forms.impresion)
	globals.setVisible('Movimiento',gidformactual_to_forms.movimiento)
	globals.setVisible('Modificacion',false)
	globals.setVisible('Exporta',gidformactual_to_forms.exporta_csv)
	forms.main.elements.textoBusqueda.visible = gidformactual_to_forms.habilita_busqueda
	forms.main.elements.btn_buscar.visible = gidformactual_to_forms.habilita_busqueda
	forms.main.elements.btn_mostrartodos.visible= gidformactual_to_forms.habilita_busqueda
}

/**
 * @properties={typeid:24,uuid:"F8EF35CE-8593-4CD5-AC87-C8CBEB953F86"}
 */
function mostrarBotones()
{
	if (gidformactual_to_forms.abm == 1)
		globals.setVisible('abm',true)
	if (gidformactual_to_forms.impresion == 1)
		globals.setVisible('Impresion',true)
	if (gidformactual_to_forms.movimiento == 1)
		globals.setVisible('Movimiento',true)
	if (gidformactual_to_forms.exporta_csv == 1)
		globals.setVisible('Exporta',true)
	globals.cambiarConfirmar()
}

/**
 * @properties={typeid:24,uuid:"5D60AFAC-37D9-4EB4-BE43-867E2B272B09"}
 * @AllowToRunInFind
 */
function onOpenFwk()
{
	//INICIO DEL MENU; ESCONDO BOTONES
	globals.gLoginUserv = security.getUserName()
	plugins.excelxport.exportEnabled = false
	plugins.excelxport.importEnabled = false
	globals.setVisible('abm',false)
	globals.setVisible('Impresion',false)
	globals.setVisible('Movimiento',false)
	globals.setVisible('Modificacion',false)
	globals.setVisible('Exporta',false)
	globals.gHistoriaIndice = 0
	
	//FILTRO A LA SOLUCION
	var sol = application.getSolutionName()
	
	/**@type {JSFoundSet<db:/fwk_navigation_infocom/soluciones>} */
	var fs = databaseManager.getFoundSet('fwk_navigation_infocom','soluciones')
	fs.loadAllRecords()
	fs.find()
	fs.nombre = sol
	fs.search()

	globals.gIdSolucion = fs.id_solucion
	
	databaseManager.addTableFilterParam('fwk_navigation_infocom',null,'id_solucion','=',globals.gIdSolucion,'SOLUTION')
	
	//FILTRO DE USUARIOS PARA CONFIRMAR EL SERVIDOR CON EL Q TRABAJA
	/**@type {JSFoundSet<db:/fwk_navigation_infocom/usuarios>} */
	var fs2 = databaseManager.getFoundSet('fwk_navigation_infocom','usuarios')
	fs2.find()
	fs2.usuario = security.getUserName()
	fs2.search()
	globals.gUservID = fs2.userv_id
	globals.gUsuarioID = fs2.usuario_id
	if (userv_to_soluciones_x_uservs.getSize() > 0)
	{
		var $servers = guserv_to_servers_x_uservs.getSize()
		var $error = 0
		for (var i = 1 ; i <= $servers ; i++)
		{
			guserv_to_servers_x_uservs.setSelectedIndex(i)
			if (databaseManager.switchServer(guserv_to_servers_x_uservs.server_original, guserv_to_servers_x_uservs.server_cambio) == false)
			{
				$error = 1
				break;
			}
		}
		if ($error == 1)
		{	
			globals.DIALOGS.showErrorDialog('Error','Error al cambiar el servidor','OK')
			security.logout()
		}
	}
	else
	{
		globals.DIALOGS.showErrorDialog('Error','El usuario no tiene los permisos necesarios para entrar','OK')
		security.logout()
	}
	
	//METODO INICIAL DE LA SOLUCION
	if ((gidsolucion_to_soluciones.metodo_inicial != null) && (gidsolucion_to_soluciones.metodo_inicial != ''))
	{
		eval('globals.'+ gidsolucion_to_soluciones.metodo_inicial + '()')
	}
}

/**
 * @properties={typeid:24,uuid:"BA7018C3-D632-4632-A34B-9011238355EA"}
 */
function opcionAlta()
{
	globals.opcionModificar()
	forms[gidformactual_to_forms.nombre].controller.newRecord()
	globals.gEstadoAbm = 1 //ALTA
	forms.menu_opciones.elements.lbl_reg.text = forms[gidformactual_to_forms.nombre].controller.getSelectedIndex() + ' de ' +forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex() + ' registros'
}

/**
 * @properties={typeid:24,uuid:"F1C1D57C-3A53-4641-8C91-7BD30B1A61EE"}
 */
function opcionAnterior()
{
	forms[gidformactual_to_forms.nombre].controller.setSelectedIndex(forms[gidformactual_to_forms.nombre].controller.getSelectedIndex()-1)
	forms.menu_opciones.elements.lbl_reg.text = forms[gidformactual_to_forms.nombre].controller.getSelectedIndex() + ' de ' +forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex() + ' registros'
}

/**
 * @properties={typeid:24,uuid:"3B589BC5-9E03-4779-81AF-389CEB9870B6"}
 */
function opcionBaja()
{
	globals.CerrarForm()
	globals.gEstadoAbm = 0 //Vuelve a 0
	try 
	{
		forms[gidformactual_to_forms.nombre].controller.deleteRecord()
	}
	catch (e) 
	{
		globals.gDialog("Aviso","No puede eliminar dicho registro","Ok","CerrarForm")
	}
	finally
	{
		forms.menu_opciones.elements.lbl_reg.text = forms[gidformactual_to_forms.nombre].controller.getSelectedIndex() + ' de ' +forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex() + ' registros'
	}
}

/**
 * @properties={typeid:24,uuid:"91F52357-BD8D-4ABA-8C1D-0333F7BADC10"}
 */
function opcionBajaConfirma()
{
	globals.gEstadoAbm = 2 //BAJA
	globals.gDialog('¿Seguro?','¿Confirma la baja del registro?','Si','opcionBaja','No','CerrarForm')
}

/**
 * @properties={typeid:24,uuid:"407B4A44-A28B-4085-BC9F-104047BF10B8"}
 */
function opcionCancelarMod()
{
	databaseManager.rollbackEditedRecords()
	databaseManager.setAutoSave(true)
	forms[gidformactual_to_forms.nombre].controller.readOnly = true
	globals.mostrarBotones()
	globals.gEstadoAbm = 0 //Vuelve a 0
	globals.finModificar()
}

/**
 * @properties={typeid:24,uuid:"9EE39111-37CC-440B-88A0-4790A3B63B8B"}
 */
function opcionConfirmarMod()
{
	if (gidformactual_to_forms.metodo_valida != null && gidformactual_to_forms.metodo_valida != '')
	{
		
		/*
		 * Se puede enviar un metodo de validacion.
		 * Debe ser un metodo del form
		 * El metodo del form debe incluir las rutas absolutas (ej: forms.customers_dtl.customerid)
		 */
		var metodo = 'forms.'+gidformactual_to_forms.nombre+'.'+gidformactual_to_forms.metodo_valida+'()'
		var res = eval(metodo)
		if (res[0] == false || res == false)
		{
			databaseManager.rollbackEditedRecords()
			if (res[1] != null)
				globals.gDialog('Error',res[1],'OK','CerrarForm')
			else
				globals.gDialog('Error','Fallo la validacion, alta denegada','OK','CerrarForm')
		}
		else
			if (!databaseManager.saveData())
			{
				databaseManager.rollbackEditedRecords()
				globals.gDialog('Error','Codigo Duplicado','OK','CerrarForm')
			}
	}
	else
	{
		var grabo = databaseManager.saveData()
		if (grabo == false)
		{
			databaseManager.rollbackEditedRecords()
			globals.gDialog('Error','Ocurrio un error en la grabacion','OK','CerrarForm')
		}
	}
	databaseManager.setAutoSave(true)
	forms[gidformactual_to_forms.nombre].controller.readOnly = true
	globals.mostrarBotones()
	globals.gEstadoAbm = 0 //Vuelve a 0
	globals.finModificar()
}

/**
 * @properties={typeid:24,uuid:"D10FCF62-6362-494E-80E1-4627E999D4F7"}
 */
function finModificar()
{
	var frm = solutionModel.getForm(gidformactual_to_forms.nombre)
	var elem = frm.getFields()
	for (var i = 0; i< elem.length; i++)
	{
		var fld = elem[i]
		fld.styleClass = 'normal'
	}
	forms[gidformactual_to_forms.nombre].controller.recreateUI()
}

/**
 * @properties={typeid:24,uuid:"055B2658-4230-4C2D-AA07-A30A1462F391"}
 */
function opcionImprimir()
{
	var $nombre = gidformactual_to_forms.nombre
	if (gidformactual_to_forms.metodo_impresion != null)
	{
		forms[$nombre][gidformactual_to_forms.metodo_impresion]()
	}
	else
	{
		if (gidformactual_to_forms.tipo == 1)
			var $tipo = true
		else
			var $tipo = false
		forms[$nombre].controller.showPrintPreview($tipo)
	}
}

/**
 * @properties={typeid:24,uuid:"E54948BC-6F29-4178-91BC-63B8EC1C2E43"}
 */
function opcionModificar()
{
	databaseManager.setAutoSave(false)
	forms[gidformactual_to_forms.nombre].controller.readOnly = false
	globals.esconderBotones()
	globals.gEstadoAbm = 3 //MODIFICAR
	
	var frm = solutionModel.getForm(gidformactual_to_forms.nombre)
	var elem = frm.getFields()
	for (var i = 0; i< elem.length; i++)
	{
		var fld = elem[i]
		fld.styleClass = 'editando'
	}
	forms[gidformactual_to_forms.nombre].controller.recreateUI()
}

/**
 * @properties={typeid:24,uuid:"27B97E36-0213-4DFC-9D6E-4FD075EA963E"}
 */
function opcionMostrarTodos()
{
	forms[gidformactual_to_forms.nombre].controller.showAllRecords()
	forms.menu_opciones.elements.lbl_reg.text = forms[gidformactual_to_forms.nombre].controller.getSelectedIndex() + ' de ' +forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex() + ' registros'
	if (gidformactual_to_forms.pantallas_to_pantalla_asociada != null)
		forms[gidformactual_to_forms.pantallas_to_pantalla_asociada.nombre].controller.showAllRecords()
	
}

/**
 * @properties={typeid:24,uuid:"5F3B8873-0507-4F36-AFEB-3AEAA826CFED"}
 */
function opcionPDF()
{
	var $nombre = gidformactual_to_forms.nombre
	if (gidformactual_to_forms.metodo_impresion != null)
	{
		forms[$nombre][gidformactual_to_forms.metodo_pdf]()
	}
	else
	{
		if (gidformactual_to_forms.tipo == 1)
			var $tipo = true
		else
			var $tipo = false
			
		var type = application.getApplicationType();
		if (type == 5)
			forms[$nombre].controller.showPrintPreview(c)
		else
		{
			var fecha = new Date()
			fecha = utils.dateFormat(fecha,'dd-MM-yyyy HH-mm-ss')
			var arch = plugins.file.showFileSaveDialog( 'c:/'+gidformactual_to_forms.titulo + ' ' + fecha + '.pdf', 'Guardar archivo')
			if (arch)
			{
				forms[$nombre].controller.print($tipo,false,plugins.pdf_output.getPDFPrinter(arch.getAbsoluteFile()));
				application.showURL('file:///'+arch.getAbsolutePath())
			}
		}
	}
}

/**
 * @properties={typeid:24,uuid:"703F098B-A497-461C-9E1E-FB336DEA6D49"}
 */
function opcionPrimer()
{
	forms[gidformactual_to_forms.nombre].controller.setSelectedIndex(1)
	forms.menu_opciones.elements.lbl_reg.text = forms[gidformactual_to_forms.nombre].controller.getSelectedIndex() + ' de ' +forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex() + ' registros'
}

/**
 * @properties={typeid:24,uuid:"CD6FB1B3-B81E-4452-B6FA-C3671C15AE63"}
 */
function opcionSiguiente()
{
	forms[gidformactual_to_forms.nombre].controller.setSelectedIndex(forms[gidformactual_to_forms.nombre].controller.getSelectedIndex()+1)
	forms.menu_opciones.elements.lbl_reg.text = forms[gidformactual_to_forms.nombre].controller.getSelectedIndex() + ' de ' +forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex() + ' registros'
}

/**
 * @properties={typeid:24,uuid:"48A00F96-AEFC-474C-B694-571F8A971FE8"}
 */
function opcionUltimo()
{
	forms[gidformactual_to_forms.nombre].controller.setSelectedIndex(forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex())
	forms.menu_opciones.elements.lbl_reg.text = forms[gidformactual_to_forms.nombre].controller.getSelectedIndex() + ' de ' +forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex() + ' registros'
}

/**
 * @param {String} grupo
 * @param {Boolean} estado
 * @properties={typeid:24,uuid:"C237FFF2-5586-4B34-92E7-16E1F65D5207"}
 */
function setVisible(grupo, estado)
{
/*	var grupo = arguments[0]
	var estado = arguments[1]*/
	   
	//Cambio el valor para poder pasar booleanas o enteros
	if (estado == 1)
		estado = true
	else if (estado == 0)
		estado = false
	                       
	switch (grupo)
	{
		case 'abm':
		{
			forms.menu_opciones.elements.btn_alta.visible = estado
			forms.menu_opciones.elements.btn_baja.visible = estado
			forms.menu_opciones.elements.btn_modif.visible = estado
			//globals.setVisibleTabla() Baja en cada fila
			break;
		}
		case 'Impresion':
		{
			forms.menu_opciones.elements.btn_pdf.visible = estado
			forms.menu_opciones.elements.btn_imprimir.visible = estado
			break;
		}
		case 'Movimiento':
		{
			forms.menu_opciones.elements.btn_ultimo.visible = estado
			forms.menu_opciones.elements.btn_siguiente.visible = estado
			forms.menu_opciones.elements.btn_pri.visible = estado
			forms.menu_opciones.elements.btn_anterior.visible = estado
			//forms.menu_opciones.elements.lbl_reg.visible = estado
			if (gidformactual_to_forms.getSize() != 0)
				forms.menu_opciones.elements.lbl_reg.text = forms[gidformactual_to_forms.nombre].controller.getSelectedIndex() + ' de '+ forms[gidformactual_to_forms.nombre].controller.getMaxRecordIndex() + ' registros'
			break;
		}
		case 'Modificacion':
		{
			globals.cambiarConfirmar(estado)
			break;
		}
		case 'Exporta':
		{
			forms.menu_opciones.elements.btn_csv.visible = estado
		}
	}
}

/**
 * @properties={typeid:24,uuid:"75D098BE-01BD-4DFF-ABC0-9319C1EAD698"}
 */
function setVisibleTabla()
{
	if (gidformactual_to_forms.tipo == 2)
	{
		var frm = solutionModel.getForm(gidformactual_to_forms.nombre)
		if (frm.getLabel('btn_baja_tabla') == null)
		{
			var btn = frm.newButton('',frm.width,0,20,20,globals.opcionBajaConfirma)
			btn.name = 'btn_baja_tabla'
			btn.imageMedia = solutionModel.getMedia('delete2.gif')
			btn.showClick = false
			btn.showFocus = false
			btn.transparent = true
			forms[gidformactual_to_forms.nombre].controller.recreateUI()
		}
	}
}

/**
 * @properties={typeid:24,uuid:"761B0B8D-C2B7-47CA-9CB3-CD71BEE5E769"}
 */
function salir(event) {
	globals.CerrarForm()
	security.logout()
	if (application.getApplicationType() == APPLICATION_TYPES.SMART_CLIENT)
		application.closeSolution()
	else
		if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
			forms.foto.controller.show()
}

/**
 * @properties={typeid:24,uuid:"9EEE8479-9E03-4B24-8B0D-E829757A3629"}
 */
function preguntaSalir(event) {
	globals.gDialog('Salir','¿Seguro que desea salir?','Si','salir','No','CerrarForm')
}

/**
 * @properties={typeid:24,uuid:"CD41E06B-2E13-451E-8B01-A4D2682309CB"}
 */
function opcionCsv() {
	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
	{
		globals.gDialog('Error','Esta opcion no esta disponible para cliente web','OK','CerrarForm');
	}
	else
	{
		forms[gidformactual_to_forms.nombre].controller.readOnly = false
		//var tbl = databaseManager.getTable( forms[gidformactual_to_forms.nombre].controller.getServerName(),  forms[gidformactual_to_forms.nombre].controller.getTableName())
		var elems = forms[gidformactual_to_forms.nombre].elements.allnames
		if (elems.length > 0)
		{
			var cols = new Array()
			var tituloCols = new Array()
			for (var i = 0; i<elems.length ; i++)
			{
				if ((forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.BUTTON)&& (forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.LABEL)&& (forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.IMAGE_MEDIA)&& (forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.TABPANEL)&& (forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.PORTAL)&& (forms[gidformactual_to_forms.nombre].elements[elems[i]].getElementType() != ELEMENT_TYPES.PASSWORD) )
				{
					cols[i] = forms[gidformactual_to_forms.nombre].elements[elems[i]].getDataProviderID()
					tituloCols[i] = forms[gidformactual_to_forms.nombre].elements[elems[i]].getTitleText()
				}
			}
			var fecha = new Date()
			fecha = utils.dateFormat(fecha,'dd-MM-yyyy hh-mm-ss')
			var jsFile = plugins.file.showFileSaveDialog( 'c:/'+ gidformactual_to_forms.titulo + ' ' + fecha + '.csv' )
			if (jsFile)
			{
				var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
				var bw = new Packages.java.io.BufferedWriter(fw);
				
				//ESCRIBO EL NOMBRE DE LAS COLUMNAS EN LA PRIMER LINEA DEL ARCHIVO
				var linea = ''
				for (j=0;j<cols.length;j++)
				{
					if (j!=0)
						linea+= ';'
					linea+= '"' + tituloCols[j] + '"'
				}
				bw.write(linea,0,linea.length)
				linea = ''
				var fs = forms[gidformactual_to_forms.nombre].foundset
				var tbl = databaseManager.getTable( fs)
						
				var i = 1
				while ((i <= globals.gLimiteCsv) && (i<=fs.getMaxRecordIndex()))
				{
					fs.setSelectedIndex(i)
					for (j=0;j<cols.length;j++)
					{
						if (forms[gidformactual_to_forms.nombre].elements[elems[j]].getElementType() == ELEMENT_TYPES.CALENDAR)
							var campo = utils.dateFormat(fs.getDataProviderValue(cols[j]), forms[gidformactual_to_forms.nombre].elements[elems[j]].format)
						else
							if (forms[gidformactual_to_forms.nombre].elements[elems[j]].getValueListName() == null) // 29-07-2010 
							{
								var campo = fs.getDataProviderValue(cols[j])
								if ((tbl.getColumn(cols[j])!= null) && (tbl.getColumn(cols[j]).getType() == JSColumn.DATETIME))
									campo = utils.dateFormat(campo, forms[gidformactual_to_forms.nombre].elements[elems[j]].format)
							}
							else
							{
								forms[gidformactual_to_forms.nombre].elements[elems[j]].requestFocus()
								forms[gidformactual_to_forms.nombre].elements[elems[j]].selectAll()
								var campo = forms[gidformactual_to_forms.nombre].elements[elems[j]].getSelectedText()
							}

						if (j!=0)
							linea+= ';'
						linea+= '"' + campo + '"'
					}
					bw.newLine()
					bw.write(linea,0,linea.length)
					linea = ''
					i++
				}
				bw.close()
				fw.close()
				forms[gidformactual_to_forms.nombre].controller.readOnly = true
				application.showURL('file:///'+ jsFile.getAbsolutePath())
			}
		}
		else
			globals.gDialog('Error','El form no tiene elementos','OK','CerrarForm');
	}
}

/**
 * @properties={typeid:24,uuid:"3104076D-B799-4526-B4AF-8E4411C3E743"}
 */
function opcionBackup() {
	if (application.getApplicationType() == APPLICATION_TYPES.WEB_CLIENT)
	{
		globals.gDialog('Error','Esta opcion no esta disponible para cliente web','OK','CerrarForm');
	}
	else
	{
		var tbl = databaseManager.getTable( forms[gidformactual_to_forms.nombre].controller.getServerName(),  forms[gidformactual_to_forms.nombre].controller.getTableName())
		var cols = tbl.getColumnNames()
		
		var jsFile = plugins.file.showFileSaveDialog( 'c:/'+tbl.getSQLName()+'.csv')
		if (jsFile)
		{
			var fw = new Packages.java.io.FileWriter(jsFile.getAbsolutePath());
			var bw = new Packages.java.io.BufferedWriter(fw);
			
			//ESCRIBO EL NOMBRE DE LAS COLUMNAS EN LA PRIMER LINEA DEL ARCHIVO
			var linea = ''
			for (j=0;j<cols.length;j++)
			{
				if (j!=0)
					linea+= ','
				linea+= '"' + cols[j] + '"'
			}
			bw.write(linea,0,linea.length)
			linea = ''
			var fs = forms[gidformactual_to_forms.nombre].foundset
			
			var i = 1
			while ((i <= globals.gLimiteCsv) && (i<=fs.getMaxRecordIndex()))
			{
				fs.setSelectedIndex(i)
				for (j=0;j<cols.length;j++)
				{
					var campo = fs.getDataProviderValue(cols[j])
		
					if (j!=0)
						linea+= ','
					linea+= '"' + campo + '"'
				}
				bw.newLine()
				bw.write(linea,0,linea.length)
				linea = ''
				i++
			}
			
			bw.close()
			fw.close()
			globals.gDialog('Exito','El archivo fue creado con exito','OK','CerrarForm');
		}
	}
}

/**
 * Callback method for when an error occurred.
 *
 * @param {Exception} ex exception to handle
 *
 * @returns {Boolean}
 *
 * @properties={typeid:24,uuid:"1897878A-7755-46D0-A9A4-D212ACFEC681"}
 */
function onError(ex) {
	if (databaseManager.hasTransaction())
	{
		databaseManager.rollbackTransaction()
	}
	
	if (databaseManager.getAutoSave() == false)
	{
		databaseManager.rollbackEditedRecords()
	}
	
	var svyExpList = new java.util.HashMap();
	
	//Add your message to the respective Exceptions 
	svyExpList.put(ServoyException.ACQUIRE_LOCK_FAILURE, "Falla en adquisicion de lock (Nº 1)");
	svyExpList.put(ServoyException.BAD_SQL_SYNTAX, "Error en la sintaxis de SQL (Nº 2)");
	svyExpList.put(ServoyException.DATA_ACCESS_RESOURCE_FAILURE, "Error en el acceso a los datos (Nº 3)");
	svyExpList.put(ServoyException.DATA_INTEGRITY_VIOLATION, "Violacion de la integridad de los datos (Nº 4)");
	svyExpList.put(ServoyException.DEADLOCK, "Dead Lock (Nº 5)");
	svyExpList.put(ServoyException.DELETE_NOT_GRANTED, "Baja no autorizada (Nº 6)");
	svyExpList.put(ServoyException.EXECUTE_PROGRAM_FAILED, "Error al ejecutar un programa (Nº 7)");
	svyExpList.put(ServoyException.INCORRECT_LOGIN, "Login incorrecto (Nº 8)");
	svyExpList.put(ServoyException.INVALID_INPUT, "Entrada incorrecta (Nº 9)");
	svyExpList.put(ServoyException.INVALID_INPUT_FORMAT, "Formato de entrada incorrecto (Nº 10)");
	svyExpList.put(ServoyException.INVALID_RESULTSET_ACCESS, "Acceso a resultset invalido (Nº 11)");
	svyExpList.put(ServoyException.NO_ACCESS, "No tiene acceso (Nº 12)");
	svyExpList.put(ServoyException.NO_CREATE_ACCESS, "No tiene acceso para crear (Nº 13)");
	svyExpList.put(ServoyException.NO_DELETE_ACCESS, "No tiene acceso para borrar (Nº 14)");
	svyExpList.put(ServoyException.NO_LICENSE, "No hay licencias disponibles (Nº 15)");
	svyExpList.put(ServoyException.NO_MODIFY_ACCESS, "No tiene acceso para modificar (Nº 16)");
	svyExpList.put(ServoyException.NO_PARENT_DELETE_WITH_RELATED_RECORDS, "No se puede borrar el registro relacionado (padre) (Nº 17)");
	svyExpList.put(ServoyException.NO_RELATED_CREATE_ACCESS, "No tiene acceso para crear en la relacion (Nº 18)");
	svyExpList.put(ServoyException.PERMISSION_DENIED, "Permiso denegado (Nº 19)");
	svyExpList.put(ServoyException.RECORD_LOCKED, "Registro clausurado (Nº 20)");
	svyExpList.put(ServoyException.SAVE_FAILED, "Fallo la grabacion de datos (Nº 21)");
	svyExpList.put(ServoyException.UNKNOWN_DATABASE_EXCEPTION, "Ocurrio un error en la base de datos (Nº 22)");
	
	//var exception = arguments[0]; //Occurred Exception
	
	if (ex.isServoyException) //Servoy Exception
	{
		var msg = svyExpList.get(ex.getErrorCode());
		globals.gDialog( "Error", msg +' Codigo de Error: '+ex.getErrorCode(), 'OK','CerrarForm');
	}
	else
	{
		var msg = ex.getMessage()
		var i = 0
		while (i < msg.length)
		{
			if (msg[i] == "'")
				msg = msg.substring(0,i) + msg.substring(i+1,msg.length)
			i++
		}
		globals.gDialog( "Error",msg, 'OK','CerrarForm');
	}

}
